**********************************************************************
$42 00
**********************************************************************

000 $0000    
$000B7D2F     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 02 00 
  AND reg($80), $0002
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Fire elemental
  DMG = DMG * 2

**********************************************************************
$42 01
**********************************************************************

001 $0001    
$000B7D43     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 00 08 
  AND reg($80), $0800
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Thunder elemental
  DMG = DMG * 2

**********************************************************************
$42 02
**********************************************************************

001 $0001    
$000B7D43     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 04 00 
  AND reg($80), $0004
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Water elemental
  DMG = DMG * 2

**********************************************************************
$42 03
**********************************************************************

003 $0003    
$000B7D6B     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 00 04 
  AND reg($80), $0400
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Ice elemental
  DMG = DMG * 2

**********************************************************************
$42 04
**********************************************************************

004 $0004    
$000B7D7F     

0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 80 00 11 00 
  IF reg($80) == $0080: GOTO [+$11]
06 80 00 10 16 00 
  IF reg($80) == $1000: GOTO [+$16]
43 
  RETURN

offset [+$11] 
0F 2A 02 00 
  MUL reg($2A), $0002
43 
  RETURN

offset [+$16] 
0C 2A 00 00 
  LOAD reg($2A), $0000
43
  RETURN

If DMG is "Effective against Flying enemies" ONLY:
  DMG = DMG * 2
Elif DMG is Earth elemental ONLY:
  DMG = 0

**********************************************************************
$42 05
**********************************************************************

000 $0000    
$000B7D2F     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 10 00 
  AND reg($80), $0010
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Light elemental
  DMG = DMG * 2

**********************************************************************
$42 06
**********************************************************************

010 $000A    
$000B7DFE     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 02 00 
  AND reg($80), $0002
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Fire elemental
  DMG = DMG / 2

**********************************************************************
$42 07
**********************************************************************

010 $000A    
$000B7DFE     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 00 08 
  AND reg($80), $0004
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Thunder elemental
  DMG = DMG / 2

**********************************************************************
$42 08
**********************************************************************

010 $000A    
$000B7DFE     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 04 00 
  AND reg($80), $0004
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Water elemental
  DMG = DMG / 2

**********************************************************************
$42 09
**********************************************************************

009 $0009    
$000B7DEA     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 00 04 
  AND reg($80), $0400
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Ice elemental
  DMG = DMG / 2

**********************************************************************
$42 0A
**********************************************************************

010 $000A    
$000B7DFE     

0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 10 00 
  AND reg($80), $0010
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Light elemental
  DMG = DMG / 2

**********************************************************************
$42 0B
**********************************************************************

011 $000B    
$000B7E12    

offset [+$00] 
0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 00 00 0B 00 
  IF reg($80) == $0000: GOTO [+$0B]
43 
  RETURN
offset [+$0B] 
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Neutral ONLY:
  DMG = DMG / 2

**********************************************************************
$42 0C
**********************************************************************

012 $000C    
$000B7E22     

0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 00 01 0B 00 
  IF reg($80) == $0001: GOTO [+$0B]
43 
  RETURN
offset [+$0B] 
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is "Effective against Dragons" ONLY:
  DMG = DMG * 2

**********************************************************************
$42 0D
**********************************************************************

013 $000D    
$000B7E32   
  
0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 20 00 
  AND reg($80), $0020
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
offset [+$000F] 
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is Shadow elemental
  DMG = DMG * 2

**********************************************************************
$42 0E
**********************************************************************

013 $000D    
$000B7E32   
  
0C 80 27 80 
  LOAD reg($80), reg($27)
16 80 20 00 
  AND reg($80), $0020
07 80 00 00 0F 00 
  IF reg($80) <> $0000: GOTO [$000F]
43 
  RETURN
offset [+$000F] 
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is Shadow elemental
  DMG = DMG / 2

**********************************************************************
$42 0F
**********************************************************************

015 $000F    
$000B7E5A     

0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 40 00 0B 00 
  IF reg($80) == $0040: GOTO [+$0B]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is "Effective against Hard enemies" ONLY:
  DMG = DMG * 2

**********************************************************************
$42 10
**********************************************************************

016 $0010    
$000B7E6A     

0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 00 02 0B 00 
  IF reg($80) == $0200: GOTO [+$0B]
43 
  RETURN
0F 2A 02 00 
  MUL reg($2A), $0002
43
  RETURN

If DMG is "Effective against Insects" ONLY:
  DMG = DMG * 2

**********************************************************************
$42 11
**********************************************************************

017 $0011    
$000B7E7A     

0C 4E 00 00 
  LOAD reg($4E), $0000
0C 50 00 00 
  LOAD reg($50), $0000
0C 54 00 00 
  LOAD reg($54), $0000
0C 56 00 00 
  LOAD reg($56), $0000
0C 58 00 00 
  LOAD reg($58), $0000
43
  RETURN

Full protection against Poison, Silence, Paralysis, Confusion, Sleep

**********************************************************************
$42 12
**********************************************************************

018 $0012    
$000B7E8F     

0C 80 2A 80 
  LOAD reg($80), reg($2A)
09 80 00 00 10 00 
  IF reg($80) < $0000: GOTO [+$10]
1A 80 
  NEG reg($80)
0C 2A 80 80 
  LOAD reg($2A), reg($80)

offset [+$0010] 
0C 52 00 00 
  LOAD reg($52), $0000
35 00 
  ???
43
  RETURN

If DMG > 0 ("healing DMG):
  DMG = - DMG
???
Full protection against Instant Death

**********************************************************************
$42 13
**********************************************************************

019 $0013    
$000B7EA6     

06 2A 00 00 2B 00 
  IF reg($80) == $0000: GOTO [$002B]
0C 81 2A 80 
  LOAD reg($81), reg($2A)
08 81 00 00 2B 00 
  IF reg($81) > $0000: GOTO [$002B]
1A 81 
  NEG reg($81)
13 80 05 
  LOAD reg($80), stat_reg(DFP)
10 80 02 00 
  DIV reg($80), $0002
0E 81 80 80 
  SUB reg($81), reg($80)
10 81 0A 00 
  DIV reg($81), $000A
0D 80 81 80 
  ADD reg($80), reg($81)
1A 80 
  NEG reg($81)
0C 2A 80 80 
  LOAD reg($2A), reg($80)

offset [+$002B]
43
  RETURN

$2A = -{DFP / 2 + [(- $2A - DFP / 2) / 10]}
base DMG = -{DFP / 2 + [(- $2A - DFP / 2) / 10]}

Ex.: 
Red Core: DFP = 300
If base DMG = - 800
=> base DMG = -{150 + [(800 - 150) / 10]}
       = - 215

(If base DMG < 0 => base DMG = base DMG / 10 - 0.45 * DFP)

When DFP will be taken into account: DMG = DMG / 10

**********************************************************************
$42 14
**********************************************************************

020 $0014    
$000B7ED2     

0C 80 27 80 
  LOAD reg($80), reg($27)
07 80 00 00 0B 00 
  IF reg($80) <> $0000: GOTO [$000B]
43
  RETURN 
offset [+$000B]
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is NOT Neutral elemental
  DMG = DMG / 2

**********************************************************************
$42 15
**********************************************************************

021 $0015    
$000B7EE2     

16 81 27 80 
  AND reg($81), reg($27)
07 81 00 00 0B 00 
  IF reg($81) <> $0000: GOTO [$000B]
43 
  RETURN
offset [+$0B]
0C 2A 00 00 
  LOAD reg($2A), $0000
43
  RETURN

If DMG is [reg($81)] elemental
  DMG = 0

**********************************************************************
$42 16
**********************************************************************

022 $0016    
$000B7EF2     
16 80 27 80 
  AND reg($80), reg($27)
07 80 00 00 0B 00 
  IF reg($80) <> $0000: GOTO [$000B]
43 
  RETURN

offset [+$0B]
0C 80 2A 80 
  LOAD reg($80), reg($2A)
1A 80 
  NEG reg($80)
0C 2A 80 80 
  LOAD reg($2A), reg($80)
43
  RETURN

If DMG is [reg($80)] elemental
  DMG = - DMG

**********************************************************************
$42 17
**********************************************************************

023 $0017    
$000B7F08     

0C 80 27 80 
  LOAD reg($80), reg($27)
06 80 40 00 0B 00 
  IF reg($80) == $0040: GOTO [$000B]
43 
  RETURN
offset [+$0B]
10 2A 02 00 
  DIV reg($2A), $0002
43
  RETURN

If DMG is "Effective against Hard enemies" ONLY
  DMG = DMG / 2

**********************************************************************
$42 21
**********************************************************************

033 $0021    
$000B7F98     

15 80 04 
  LOAD reg($80), self_statreg(ATP)
0F 80 03 00 
  MUL reg($80), $0003
10 80 02 00 
  DIV reg($80), $0002
43
  RETURN

reg($80) = self_statreg(ATP) * 1.5

**********************************************************************
$42 22
**********************************************************************

034 $0022    
$000B7FA4     

0F 80 02 00 
  MUL reg($80), $0002
13 82 05 
  LOAD reg($82), target_statreg(DFP)
10 82 02 00 
  DIV reg($82), $0002
0D 80 82 80 
  ADD reg($80), reg($82)
1A 80 
  NEG reg($80)
0C 2A 80 80 
  LOAD reg($2A), reg($80)
43
  RETURN

reg($2A) = - (reg($80)*2 + target_statreg(DFP)/2)

**********************************************************************
$42 23
**********************************************************************

035 $0023    
$000B7FBA     

15 80 04 
  LOAD reg($80), self_stat_reg(ATP)
15 11 0D 
  LOAD reg($11), self_stat_reg(temp ATP+)
0D 80 11 80 
  ADD reg($80), reg($11)
43
  RETURN

reg($80) = ATP + temp ATP+

**********************************************************************
$42 25
**********************************************************************

037 $0025    
$000B7FD0     

15 80 02 
  LOAD reg($80), self_stat_reg(max HP)
15 81 00 
  LOAD reg($81), self_stat_reg(current HP)
10 80 04 00 
  DIV reg($80), $0004
0F 81 19 00 
  MUL reg($81), $0019
10 81 80 80 
  DIV reg($81), reg($80)
0C 80 64 00 
  LOAD reg($80), $0064
0E 80 81 80 
  SUB reg($80), reg($81)
15 81 09 
  LOAD reg($81), self_stat_reg(GUT)
0F 81 19 00 
  MUL reg($81), $0019
10 81 82 80 
  DIV reg($81), reg($82)
43
  RETURN

reg($80) = 100 - ([current HP] * 25 / ([max HP] / 4))
         = 100 - ([current HP] / [max HP] * 100)
         = %age of total HP that has been lost
reg($81) = [GUT] * 25 / reg($82)

**********************************************************************
$42 26
**********************************************************************

038 $0026    $000B7FF6     

0C 80 03 00 
0C 81 03 00 
11 81 
0D 81 01 00 
43

reg($80) = $03
reg($81) = random number in range [$01, $03]

**********************************************************************
$42 27
**********************************************************************

039 $0027    $000B8005     

0E 80 01 00 
0D 81 01 00 
06 81 04 00 0F 00 
43 
offset [+$000F] 
0C 81 01 00 
43

decrement reg($80) by 1
increment reg($81) by 1
if reg($81) == #04:
    reg($81) == #01

**********************************************************************
$42 28
**********************************************************************

040 $0028    $000B8019     

offset [+$00] 
0C 81 23 80 
  LOAD reg($81), reg($23)
06 81 02 00 22 00 
  IF reg($81) == $0002: GOTO [+$22]
15 81 07 
  LOAD reg($81), self_statreg(AGL)
4E 82 07 
  LOAD reg($82), target_stat_reg($AGL)
0B 81 82 80 22 00 
  IF reg($81) <= reg($82): GOTO [$22]
11 81 
  RAND reg($81)
0B 81 82 80 22 00 
  IF reg($81) <= reg($82): GOTO [$22]
0C 2A 00 00
  LOAD reg($2A), $0000
offset [+$22] 
43 
  RETURN

If AGL of the victim is > to AGL of the attacker, 
choose a random number in range [0, AGL-of-the-victim[. 
If this number is > to AGL of the attacker,
DMG = 0

Chances of evading attacks:
- If AGL of the Capsule Monster =< AGL of the attacker
  => can't escape the attack.
- If AGL of the Capsule Monster > AGL of the attacker
  => a random number in range [0, AGL of the CM[ is generated.
     If number > AGL of the enemy
     => evade attack (DMG = 0)
